{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<ul id=\"breadcrumb\">\n",
    "<li><a href=\"#第7章-支持向量机\">&nbsp;</a></li>\n",
    "<li><a href=\"#概念知识\">概念知识</a></li>\n",
    "<li><a href=\"#线性可分SVM\">线性可分SVM</a></li>\n",
    "<li><a href=\"#线性SVM\">线性SVM</a></li>\n",
    "<li><a href=\"#scikit-learn实例\">scikit-learn实例</a></li>\n",
    "</ul>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第14章 K均值聚类\n",
    "\n",
    "Kmeans是1967年由MacQueen提出的，注意KNN也是1967年提出的，作者是Cover和Hart。\n",
    "\n",
    "矩阵$X$表示样本集合，$X\\in \\mathbf{R}^m,x_i,x_j\\in X, x_i=(x_{1i},x_{2i},\\dots,x_{mi})^{\\mathrm T},x_j=(x_{1j},x_{2j},\\dots,x_{mj})^\\mathrm T$，$n$个样本，每个样本是包含$m$个属性的特征向量，\n",
    "\n",
    "### 距离或者相似度\n",
    "\n",
    "#### 闵可夫斯基距离\n",
    "\n",
    "$$\n",
    "d_{ij}=\\left(\\sum_{k=1}^m|x_{ki}-x_{kj}|^p\\right)^\\frac{1}{p}\\\\\n",
    "p \\ge 1\n",
    "$$\n",
    "\n",
    "#### 马哈拉诺比斯距离\n",
    "\n",
    "马氏距离\n",
    "\n",
    "$d_{ij}=\\left[(x_i-x_j)^\\mathrm TS^{-1}(x_i-x_j)\\right]^{\\frac{1}{2}}$\n",
    "\n",
    "#### 相关系数\n",
    "\n",
    "$$\n",
    "r_{ij}=\\frac{\\sum\\limits_{k=1}^m(x_{ki}-\\bar x_i)(x_{kj}-\\bar x_j)}{\\left[\\sum\\limits_{k=1}^m(x_{ki}-\\bar x_i)^2\\sum\\limits_{k=1}^m(x_{kj}-\\bar x_j)^2\\right]^\\frac{1}{2}}\\\\\n",
    "\\bar x_i=\\frac{1}{m}\\sum\\limits_{k=1}^mx_{ki}\\\\\n",
    "\\bar x_j=\\frac{1}{m}\\sum\\limits_{k=1}^mx_{kj}\n",
    "$$\n",
    "\n",
    "#### 夹角余弦\n",
    "\n",
    "$$\n",
    "s_{ij}=\\frac{\\sum\\limits_{k=1}^m x_{ki}x_{kj}}{\\left[\\sum\\limits_{k=1}^mx_{ki}^2\\sum\\limits_{k=1}^mx_{kj}^2\\right]^\\frac{1}{2}}\n",
    "$$\n",
    "\n",
    "#### 距离和相关系数的关系\n",
    "\n",
    "其实书上的这个图，并看不出来距离和相关系数的关系，但是书中标注了角度的符号。\n",
    "\n",
    "### 类或簇\n",
    "\n",
    "### 类与类之间的距离\n",
    "\n",
    "类和类之间的距离叫做linkage，这些实际上是算法实现过程中的一些属性。\n",
    "\n",
    "类的特征包括：均值，直径，样本散布矩阵，样本协方差矩阵\n",
    "\n",
    "类与类之间的距离：最短距离，最长距离，中心距离，平均距离。\n",
    "\n",
    "类$G_p$和类$G_q$\n",
    "\n",
    "#### 最短(single linkage)\n",
    "\n",
    "$D_{pq}=\\min\\{d_{ij}|x_i\\in G_p, x_j \\in G_q\\}$\n",
    "\n",
    "#### 最长(complete linkage)\n",
    "\n",
    "$D_{pq}=\\max \\{d_{ij}|x_i \\in G_p, x_j \\in G_q\\}$\n",
    "\n",
    "#### 平均(average linkage)\n",
    "\n",
    "$D_{pq}=\\frac{1}{n_pn_q}\\sum\\limits_{x_i\\in G_p}\\sum\\limits_{x_j\\in G_q}d_{ij}$\n",
    "\n",
    "#### 中心\n",
    "\n",
    "$D_{pq}=d_{\\bar x_p\\bar x_q}$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T17:58:21.139124Z",
     "start_time": "2020-11-15T17:58:21.128489Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "class Clustering(object):\n",
    "    def __init__(self, k=2, maxiter=1000):\n",
    "        self.labels = None\n",
    "        self.k = k\n",
    "        self.d = None\n",
    "        self.metrics = None\n",
    "        self.gs = None\n",
    "        self.maxiter = maxiter\n",
    "\n",
    "    def fit(self, x):\n",
    "        pass\n",
    "\n",
    "    def predict(self, x):\n",
    "        pass\n",
    "    \n",
    "class ClusterAgglomerative(Clustering):\n",
    "    # algo 14.1\n",
    "    def fit(self, x, debug=False):\n",
    "        n_samples = x.shape[0]\n",
    "        self.labels = np.arange(n_samples)\n",
    "        # assign cluster per sample\n",
    "        gs = [Cluster(str(idx), data) for idx, data in enumerate(x)]\n",
    "        if debug:\n",
    "            print(len(gs), self.k)\n",
    "        while len(gs) > self.k:\n",
    "            mindistance = np.inf\n",
    "            ga = None\n",
    "            gb = None\n",
    "            for g in gs:\n",
    "                for g_ in gs:\n",
    "                    if g == g_:\n",
    "                        continue\n",
    "                    distance = g - g_\n",
    "                    if distance < mindistance:\n",
    "                        ga = g\n",
    "                        gb = g_\n",
    "                        mindistance = distance\n",
    "            if mindistance < np.inf:\n",
    "                gs.remove(ga)\n",
    "                gs.remove(gb)\n",
    "                gs.append(ga | gb)\n",
    "                if debug:\n",
    "                    print(ga, gb, mindistance)\n",
    "            if debug:\n",
    "                print(\"len of gs:\", len(gs))\n",
    "        self.gs = gs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T17:58:21.151569Z",
     "start_time": "2020-11-15T17:58:21.141875Z"
    }
   },
   "outputs": [],
   "source": [
    "class ClusterKmeans(Clustering):\n",
    "    def fit(self, x, debug=False):\n",
    "        n_samples = x.shape[0]\n",
    "        # random set k center\n",
    "        centroids = x[np.random.randint(x.shape[0], size=self.k)]\n",
    "        # convergence judgement\n",
    "        n_iter = 0\n",
    "        while n_iter <= self.maxiter:\n",
    "            # assign sample to center\n",
    "            gs = [Cluster(str(idx), centroid) for (idx, centroid) in enumerate(centroids)]\n",
    "            for item in x:\n",
    "                d_min = np.inf\n",
    "                c_min = 0\n",
    "                for idx, centroid in enumerate(centroids):\n",
    "                    d = np.sqrt(np.sum((item-centroid)**2))\n",
    "                    if d < d_min:\n",
    "                        d_min = d\n",
    "                        c_min = idx\n",
    "                gs[c_min].data = np.vstack((gs[c_min].data, item))\n",
    "            # recompute center\n",
    "            centroids = [g.data.mean(axis=0) for g in gs]\n",
    "            if debug:\n",
    "                print(gs[0].data.shape[0], gs[1].data.shape[1])\n",
    "            n_iter += 1\n",
    "        self.gs = gs\n",
    "        if debug:\n",
    "            print([item.data for item in gs])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T17:58:21.159358Z",
     "start_time": "2020-11-15T17:58:21.153822Z"
    }
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "from sklearn import datasets\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T18:01:58.473050Z",
     "start_time": "2020-11-15T18:01:58.312362Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "debug=False\n",
    "data = [np.array([[0, 2], [0, 0], [1, 0], [5, 0], [5, 2]]), \n",
    "                np.array([0, 1, 1, 1, 0])]\n",
    "clustering = ClusterAgglomerative(k=2)\n",
    "clustering.fit(data[0], debug=debug)\n",
    "if debug:\n",
    "    print(data[0]),\n",
    "    print(data[1])\n",
    "    print(clustering.gs[0].data)\n",
    "    print(clustering.gs[1].data)\n",
    "    print(clustering.gs[0].name)\n",
    "    print(clustering.gs[1].name)\n",
    "\n",
    "plt.scatter(clustering.gs[0].data[:, 0],clustering.gs[0].data[:, 1])\n",
    "plt.scatter(clustering.gs[1].data[:, 0],clustering.gs[1].data[:, 1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 层次聚类\n",
    "\n",
    "层次聚类**假设**类别之间存在层次结构。\n",
    "\n",
    "层次聚类可以分成聚合聚类和分裂聚类。\n",
    "\n",
    "聚合聚类三要素：\n",
    "\n",
    "1. 距离或相似度：闵可夫斯基，马哈拉诺比斯，相关系数，余弦距离\n",
    "1. 合并规则：类间距离最小，最短，最长，中心，平均\n",
    "1. 停止条件：类的个数达到阈值，类的直径达到阈值\n",
    "\n",
    "### 算法14.1\n",
    "\n",
    "输入：$n$个样本组成的集合$X$\n",
    "\n",
    "输出：对样本的一个层次化聚类$C$\n",
    "\n",
    "1. 计算$n$个样本两两之间的欧氏距离$\\{d_{ij}\\}$，记作矩阵$D=[d_{ij}]_{n\\times n}$\n",
    "1. 构造$n$个类，每个类只包含一个样本\n",
    "1. 合并类间距离最小的两个类，其中最短距离为类间距离，构建一个新类。\n",
    "1. 计算新类与当前各类之间的距离。如果类的个数是1， 终止计算，否则回到步骤3。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T18:00:53.642985Z",
     "start_time": "2020-11-15T18:00:29.960251Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "debug=False\n",
    "n_samples = 150\n",
    "data = datasets.make_circles(n_samples=n_samples, factor=.5, noise=.05)\n",
    "clustering = ClusterAgglomerative(k=2)\n",
    "clustering.fit(data[0], debug=debug)\n",
    "if debug:\n",
    "    print(data[0]),\n",
    "    print(data[1])\n",
    "    print(clustering.gs[0].data)\n",
    "    print(clustering.gs[1].data)\n",
    "    print(clustering.gs[0].name)\n",
    "    print(clustering.gs[1].name)\n",
    "\n",
    "plt.scatter(clustering.gs[0].data[:, 0],clustering.gs[0].data[:, 1])\n",
    "plt.scatter(clustering.gs[1].data[:, 0],clustering.gs[1].data[:, 1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T17:58:48.908050Z",
     "start_time": "2020-11-15T17:58:45.674765Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_samples = 150\n",
    "data = datasets.make_blobs(n_samples=n_samples, centers=2, n_features=2)\n",
    "clustering = ClusterKmeans(k=2)\n",
    "clustering.fit(data[0], debug=False)\n",
    "plt.scatter(clustering.gs[0].data[:, 0],clustering.gs[0].data[:, 1])\n",
    "plt.scatter(clustering.gs[1].data[:, 0],clustering.gs[1].data[:, 1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T18:10:15.259232Z",
     "start_time": "2020-11-15T18:10:15.249518Z"
    }
   },
   "source": [
    "## Kmeans聚类\n",
    "\n",
    "注意对于kmeans来说，距离采用的是欧氏距离**平方**，这个是个特点。\n",
    "\n",
    "### 算法14.2\n",
    "\n",
    "输入：$n$个样本的集合$X$\n",
    "\n",
    "输出：样本集合的聚类$C^*$\n",
    "\n",
    "1. 初始化。\n",
    "1. 对样本进行聚类。\n",
    "1. 计算类的中心。\n",
    "1. 如果迭代收敛或符合停止条件，输出$C^*=C^{(t)}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T17:59:17.589963Z",
     "start_time": "2020-11-15T17:59:14.400818Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_samples = 150\n",
    "data = datasets.make_circles(n_samples=n_samples, factor=.5, noise=.05)\n",
    "clustering = ClusterKmeans(k=2)\n",
    "clustering.fit(data[0])\n",
    "plt.scatter(clustering.gs[0].data[:, 0],clustering.gs[0].data[:, 1])\n",
    "plt.scatter(clustering.gs[1].data[:, 0],clustering.gs[1].data[:, 1])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## scikit-learn实例\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T18:16:40.118516Z",
     "start_time": "2020-11-15T18:16:40.113166Z"
    }
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T18:16:53.598398Z",
     "start_time": "2020-11-15T18:16:53.593926Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.datasets import make_blobs\n",
    "\n",
    "X, y = make_blobs(n_samples=200,\n",
    "                  n_features=2,\n",
    "                  centers=4,\n",
    "                  cluster_std=1,\n",
    "                  center_box=(-10.0, 10.0),\n",
    "                  shuffle=True,\n",
    "                  random_state=1);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T18:17:06.517526Z",
     "start_time": "2020-11-15T18:17:06.425749Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(6,4), dpi=144)\n",
    "plt.xticks(())\n",
    "plt.yticks(())\n",
    "plt.scatter(X[:, 0], X[:, 1], s=20, marker='o');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T18:17:34.855023Z",
     "start_time": "2020-11-15T18:17:29.476252Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "kmean: k=3, cost=-668\n"
     ]
    }
   ],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "\n",
    "n_clusters = 3\n",
    "kmean = KMeans(n_clusters=n_clusters)\n",
    "kmean.fit(X);\n",
    "print(\"kmean: k={}, cost={}\".format(n_clusters, int(kmean.score(X))))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T18:17:57.723969Z",
     "start_time": "2020-11-15T18:17:57.422280Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "labels = kmean.labels_\n",
    "centers = kmean.cluster_centers_\n",
    "markers = ['o', '^', '*']\n",
    "colors = ['r', 'b', 'y']\n",
    "\n",
    "plt.figure(figsize=(6,4), dpi=144)\n",
    "plt.xticks(())\n",
    "plt.yticks(())\n",
    "\n",
    "# 画样本\n",
    "for c in range(n_clusters):\n",
    "    cluster = X[labels == c]\n",
    "    plt.scatter(cluster[:, 0], cluster[:, 1], \n",
    "                marker=markers[c], s=20, c=colors[c])\n",
    "# 画出中心点\n",
    "plt.scatter(centers[:, 0], centers[:, 1],\n",
    "            marker='o', c=\"white\", alpha=0.9, s=300)\n",
    "for i, c in enumerate(centers):\n",
    "    plt.scatter(c[0], c[1], marker='$%d$' % i, s=50, c=colors[i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T18:19:31.081023Z",
     "start_time": "2020-11-15T18:19:31.072403Z"
    }
   },
   "outputs": [],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "\n",
    "def fit_plot_kmean_model(n_clusters, X):\n",
    "    plt.xticks(())\n",
    "    plt.yticks(())\n",
    "\n",
    "    # 使用 k-均值算法进行拟合\n",
    "    kmean = KMeans(n_clusters=n_clusters)\n",
    "    kmean.fit_predict(X)\n",
    "\n",
    "    labels = kmean.labels_\n",
    "    centers = kmean.cluster_centers_\n",
    "    markers = ['o', '^', '*', 's']\n",
    "    colors = ['r', 'b', 'y', 'k']\n",
    "\n",
    "    # 计算成本\n",
    "    score = kmean.score(X)\n",
    "    plt.title(\"k={}, score={}\".format(n_clusters, (int)(score)))\n",
    "\n",
    "    # 画样本\n",
    "    for c in range(n_clusters):\n",
    "        cluster = X[labels == c]\n",
    "        plt.scatter(cluster[:, 0], cluster[:, 1], \n",
    "                    marker=markers[c], s=20, c=colors[c])\n",
    "    # 画出中心点\n",
    "    plt.scatter(centers[:, 0], centers[:, 1],\n",
    "                marker='o', c=\"white\", alpha=0.9, s=300)\n",
    "    for i, c in enumerate(centers):\n",
    "        plt.scatter(c[0], c[1], marker='$%d$' % i, s=50, c=colors[i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-11-15T18:18:51.810061Z",
     "start_time": "2020-11-15T18:18:51.521395Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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im2iQJwTxwoiP7DmTxmRacVeqDo7dvV00m8MtBARFY5Te93ir51ARESFUkwTBUTkDwZ/yohMK3YWKiYimshYfJKIiJxxooCoPHHZVxlhoWIiInJS6rUTiIioEDKLLNfX31oSRZaJyB6DP2WklOvsEBFRYbB2AhEROeFEAVF5YvCnjLB+DhERERER5YoTBUTlhzV/iIiIiIiIiIjKGIM/RERERERERERljMEfIiIiIiIiIqIyxuAPEREREREREVEZY/CHiIiIiIiIiKiMMfhDRERERERERFTGGPwhIiIiIiIiIipjDP4QEREREREREZUxRdd1f3eoKD1VVVXTlixZ4ut+iYjKwb59+zA8PNyr6/r08T6X8cJxgojIHscJjhNERHZyGSPyEfw5DKAOwBFfd0xEVB4WABjQdb1xvE9kvHCcICJytAAcJzhOEBFZW4Asxwjfgz9ERERERERERFQ8WPOHiIiIiIiIiKiMMfhDRERERERERFTGGPwhIiIiIiIiIipjDP4QEREREREREZUxBn+IiIiIiIiIiMoYgz9ERERERERERGWMwR8iIiIiIiIiojLG4A8RERERERERURlj8IeIiIiIiIiIqIwx+ENEREREREREVMYY/CEiIiIiIiIiKmMM/hARERERERERlTEGf4iIiIiIiIiIyhiDP0REREREREREZYzBHyIiIiIiIiKiMsbgDxERERERERFRGWPwh4iIiIiIiIiojDH4Q0RERERERERUxhj8ISIiIiIiIiIqY/8/I3+djnaZWSoAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1440x432 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "\n",
    "n_clusters = [2, 3, 4]\n",
    "\n",
    "plt.figure(figsize=(10, 3), dpi=144)\n",
    "for i, c in enumerate(n_clusters):\n",
    "    plt.subplot(1, 3, i + 1)\n",
    "    fit_plot_kmean_model(c, X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
